#ifndef CJTHREAD_H
#define CJTHREAD_H

#include <stdint.h>
#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif

// 不透明结构体：隐藏线程实现细节
typedef struct CThread CThread;

// 线程函数类型（支持停止检查）
// 参数：
//   user_data: 用户自定义数据
//   is_stopped: 检查是否请求停止的回调函数
typedef void (*CThreadFunc)(void* user_data, bool (*is_stopped)(void*));

// 创建线程
//   func: 线程函数
//   user_data: 传递给线程函数的数据
// 返回：线程对象（失败返回NULL）
CThread* cjthread_create(CThreadFunc func, void* user_data);

// 销毁线程（自动join）
void cjthread_destroy(CThread* thread);

// 请求线程停止（触发停止信号）
void cjthread_request_stop(CThread* thread);

// 获取线程ID
uint64_t cjthread_get_id(const CThread* thread);

// 检查线程是否可join
bool cjthread_joinable(const CThread* thread);

// 手动join线程
void cjthread_join(CThread* thread);

#ifdef __cplusplus
}
#endif

#endif // CJTHREAD_H